//processor.cpp
#include "processor.h"

char processor::up (char c)
{
	switch (c)
	{
		case 'a' : return 'e';
		case 'A' : return 'E';
		case 'b' : return 'f';
		case 'B' : return 'F';
		case 'c' : return 'g';
		case 'C' : return 'G';
		case 'd' : return 'h';
		case 'D' : return 'H';
		case 'e' : return 'i';
		case 'E' : return 'I';
		case 'f' : return 'j';
		case 'F' : return 'J';
		case 'g' : return 'k';
		case 'G' : return 'K';
		case 'h' : return 'l';
		case 'H' : return 'L';
		case 'i' : return 'm';
		case 'I' : return 'M';
		case 'j' : return 'n';
		case 'J' : return 'N';
		case 'k' : return 'o';
		case 'K' : return 'O';
		case 'l' : return 'p';
		case 'L' : return 'P';
		case 'm' : return 'q';
		case 'M' : return 'Q';
		case 'n' : return 'r';
		case 'N' : return 'R';
		case 'o' : return 's';
		case 'O' : return 'S';
		case 'p' : return 't';
		case 'P' : return 'T';
		case 'q' : return 'u';
		case 'Q' : return 'U';
		case 'r' : return 'v';
		case 'R' : return 'V';
		case 's' : return 'w';
		case 'S' : return 'W';
		case 't' : return 'x';
		case 'T' : return 'X';
		case 'u' : return 'y';
		case 'U' : return 'Y';
		case 'v' : return 'z';
		case 'V' : return 'Z';
		case 'w' : return 'a';
		case 'W' : return 'A';
		case 'x' : return 'b';
		case 'X' : return 'B';
		case 'y' : return 'c';
		case 'Y' : return 'C';
		case 'z' : return 'd';
		case 'Z' : return 'D';
		case '1' : return '5';
		case '2' : return '6';
		case '3' : return '7';
		case '4' : return '8';
		case '5' : return '9';
		case '6' : return '0';
		case '7' : return '1';
		case '8' : return '2';
		case '9' : return '3';
		case '0' : return '4';
		default : return c;
	}
}

char processor::down (char c)
{
	switch (c)
	{
		case 'a' : return 'w';
		case 'A' : return 'W';
		case 'b' : return 'x';
		case 'B' : return 'E';
		case 'c' : return 'y';
		case 'C' : return 'Y';
		case 'd' : return 'z';
		case 'D' : return 'Z';
		case 'e' : return 'a';
		case 'E' : return 'A';
		case 'f' : return 'b';
		case 'F' : return 'B';
		case 'g' : return 'c';
		case 'G' : return 'C';
		case 'h' : return 'd';
		case 'H' : return 'D';
		case 'i' : return 'e';
		case 'I' : return 'E';
		case 'j' : return 'f';
		case 'J' : return 'F';
		case 'k' : return 'g';
		case 'K' : return 'G';
		case 'l' : return 'h';
		case 'L' : return 'H';
		case 'm' : return 'i';
		case 'M' : return 'I';
		case 'n' : return 'j';
		case 'N' : return 'J';
		case 'o' : return 'k';
		case 'O' : return 'K';
		case 'p' : return 'l';
		case 'P' : return 'L';
		case 'q' : return 'm';
		case 'Q' : return 'M';
		case 'r' : return 'n';
		case 'R' : return 'N';
		case 's' : return 'o';
		case 'S' : return 'O';
		case 't' : return 'p';
		case 'T' : return 'P';
		case 'u' : return 'q';
		case 'U' : return 'Q';
		case 'v' : return 'r';
		case 'V' : return 'R';
		case 'w' : return 's';
		case 'W' : return 'S';
		case 'x' : return 't';
		case 'X' : return 'T';
		case 'y' : return 'u';
		case 'Y' : return 'U';
		case 'z' : return 'v';
		case 'Z' : return 'V';
		case '1' : return '7';
		case '2' : return '8';
		case '3' : return '9';
		case '4' : return '0';
		case '5' : return '1';
		case '6' : return '2';
		case '7' : return '3';
		case '8' : return '4';
		case '9' : return '5';
		case '0' : return '6';
		default : return c;
	}
}

word processor::lshift (word w)
{
	char* str = w.getstr();
	if (w.getlen() < 4)
		return w;
	else
	{
		char* temp = new char[30];
		int i;
		for (i = 0; i < w.getlen() - 2; i++)
		{
			temp[i] = str[i + 2];
		}
		temp[w.getlen() - 2] = str[0];
		temp[w.getlen() - 1] = str[1];
		temp[w.getlen()] = '\0';
		word result(temp);
		delete [] temp;
		return result;
	}
}

word processor::rshift (word w)
{
	char* str = w.getstr();
	if (w.getlen() < 4)
		return w;
	else
	{
		char* temp = new char[30];
		int i;
		for (i = 0; i < w.getlen() - 2; i++)
		{
			temp[i + 2] = str[i];
		}
		temp[0] = str[w.getlen() - 2];
		temp[1] = str[w.getlen() - 1];
		temp[w.getlen()] = '\0';
		word result(temp);
		delete [] temp;
		return result;
	}
}

